Whats the correct way of showing different window after action/button trigger in PyQt4 using OOP?

by: FlyingEagle, 9 years ago

Last edited: 9 years ago

Do I just make a different class for the window and put its instance to a method ? Like so:

import sys
from PyQt4 import QtGui, QtCore, uic

class Window(QtGui.QMainWindow):
    def __init__(self):
        super(Window, self).__init__()
        uic.loadUi("ui/main.ui", self)
        self.show()


        self.settingsAction.triggered.connect(lambda: self.settingsTrigger())

    def settingsTrigger(self):
       self.settingsDialog = Settings()


class Settings(QtGui.QMainWindow):
    def __init__(self):
        super(Settings, self).__init__()
        uic.loadUi("ui/settings.ui", self)
        self.show()

app = QtGui.QApplication(sys.argv)
GUI = Window()
sys.exit(app.exec_())

With settings being the second window. The above code works but I highly doubt that this is how its supposed to be done.



You must be logged in to post. Please login or register an account.



This would be a great question for /r/learnpython. I know OOP, but no expert. Your code looks fine to me though in all honesty.

-Harrison 9 years ago

You must be logged in to post. Please login or register an account.


Don't need expert opinion I'm fine with knowing its nothing too bad to do it this way. Thanks :)

-FlyingEagle 9 years ago

You must be logged in to post. Please login or register an account.